from django.contrib.auth.models import  User
from django.db import models
from utils.modelsMinxin import ModelsSetMixin
# Create your models here.


# 二次封装

class UserDetail(ModelsSetMixin):
    SEX_CHOICES = ((0, "女"), (1, "男"))
    avatar = models.TextField(null=True,blank=True,verbose_name="头像")
    phone = models.CharField(max_length=11,null=True,blank=True,verbose_name="手机号",unique=True)
    age = models.IntegerField(null=True, blank=True, verbose_name="年龄")
    sex = models.IntegerField(null=True, blank=True, verbose_name="性别", choices=SEX_CHOICES)
    birthday = models.DateField(null=True, blank=True, verbose_name="生日")
    #   外键字段
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    class Meta:
        db_table = 'user_detail'


# 地区
class Area(models.Model):
    name = models.CharField(max_length=20, verbose_name="名称")
    #建立外键约束  通过self  关联自身
    parent = models.ForeignKey("self", on_delete=models.SET_NULL, null=True, blank=True, verbose_name="上级行政区划")
    class Meta:
        db_table = "area"

    def __str__(self):
        return self.name

# Area.parent  得到父级数据      学生表 查  班级表
# parent.area_set 得到子级数据   班级表 查  学生表



class Address(ModelsSetMixin):
    name = models.CharField(max_length=40, verbose_name='地址名')
    receiver = models.CharField(max_length=40, verbose_name='收货人')
    # Address.province     area_set   PROTECT 受保护
    province = models.ForeignKey(Area, on_delete=models.PROTECT, verbose_name='省', related_name='province_addresses')
    # Address.city         area_set
    city = models.ForeignKey(Area, on_delete=models.PROTECT, verbose_name='市', related_name='city_addresses')
    # Address.district      area_set
    district = models.ForeignKey(Area, on_delete=models.PROTECT, verbose_name='区', related_name='district_addresses')
    place = models.CharField(max_length=40, verbose_name='详情地址')
    mobile = models.CharField(max_length=11, verbose_name='手机')
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='用户')

    class Meta:
        # 根据更新时间排序，最新的放最前面
        ordering = ['-update_time']
        db_table = 'address'


    def delete(self):
        # 修改
        self.is_delete = True
        self.save()